diff --git a/astropy/coordinates/angles.py b/astropy/coordinates/angles.py
index 8e3f56abd2..4abf34ee66 100644
--- a/astropy/coordinates/angles.py
+++ b/astropy/coordinates/angles.py
@@ -591,11 +591,25 @@ class Latitude(Angle):
         else:
             limit = u.degree.to(angles.unit, 90.0)
 
-        # This invalid catch block can be removed when the minimum numpy
-        # version is >= 1.19 (NUMPY_LT_1_19)
-        with np.errstate(invalid='ignore'):
-            invalid_angles = (np.any(angles.value < -limit) or
-                              np.any(angles.value > limit))
+        # Determine the data type of the input angle
+        angle_dtype = angles.dtype
+
+        # Set a tolerance level based on the data type
+        if angle_dtype == np.float32:
+            tolerance = 1e-6  # example tolerance for float32
+        else:
+            tolerance = 0  # no tolerance for other data types
+
+        # Ensure limit is treated as a float for the arithmetic operations
+        limit = float(limit)
+
+        # Adjust the limit values based on the tolerance
+        adjusted_lower_limit = -limit - tolerance
+        adjusted_upper_limit = limit + tolerance
+
+        # Perform the comparison with the adjusted limits
+        invalid_angles = (np.any(angles.value < adjusted_lower_limit) or
+                          np.any(angles.value > adjusted_upper_limit))
         if invalid_angles:
             raise ValueError('Latitude angle(s) must be within -90 deg <= angle <= 90 deg, '
                              'got {}'.format(angles.to(u.degree)))
